﻿using System.Data;
using System.Data.Common;

namespace AT.IBMS.Framework.Data
{
    public partial class DataProvider
    {

        /// <summary>
        /// 执行 DbCommand，并返回 DataSet。
        /// </summary>
        /// <param name="command">要执行的 DbCommand。</param>
        /// <param name="transaction">执行命令时的事务。</param>
        /// <param name="parameters">DbParameter 对象的集合。</param>
        /// <returns>一个 DataSet 对象。</returns>
        public virtual DataSet ExecuteDataSet(
            DbCommand command,
            DbTransaction transaction = null,
            params DbParameter[] parameters
            )
        {

            foreach (DbParameter parameter in parameters)
            {
                command.Parameters.Add(parameter);
            }

            if (transaction == null)
            {
                return database.ExecuteDataSet(command);
            }
            else
            {
                return database.ExecuteDataSet(command, transaction);
            }

        }

        /// <summary>
        /// 执行 CommandText，并返回 DataSet。
        /// </summary>
        /// <param name="commandText">针对数据源运行的文本命令。</param>
        /// <param name="commandType">指示或指定如何解释 CommandText 属性。</param>
        /// <param name="transaction">执行命令时的事务。</param>
        /// <param name="parameters">DbParameter 对象的集合。</param>
        /// <returns>一个 DataSet 对象。</returns>
        public virtual DataSet ExecuteDataSet(
            string commandText,
            CommandType commandType = CommandType.Text,
            DbTransaction transaction = null,
            params DbParameter[] parameters
            )
        {

            DbCommand command;

            command = CreateCommand(commandText, commandType);
            return ExecuteDataSet(command, transaction, parameters);
        }
        
    }
}
